﻿#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include<stdlib.h>

//main95&96：指针输出字符数组和字符串
int main95()
{
	char arr[] = "hello world";//ABllo world
	char* p;
	p = arr;
	*p = 'A';//arr[0] p[0]
	p++;
	*p = 'B';//arr[1] p[1]
	printf("1.输出改变字符串的arr[1]后，p对应的字符串：%s\n", p);//Bllo world
	printf("2.此时的字符串arr为：%s\n", arr);//ABllo world
	printf("3.sizeof求出字符串arr的内存大小，即字符串加上\\0：%d\n", sizeof(arr));//12
	printf("4.strlen求出字符串arr的有效长度，即字符串不加上\\0：%d\n", strlen(arr));//11
	printf("6.sizeof求出指针p的内存大小，即指针类型的内存大小，都是4：%d\n", sizeof(p));//4
	printf("5.strlen求出改变arr[1]后，指针p对应的有效长度：%d\n", strlen(p));//10


	system("pause");
	return EXIT_SUCCESS;
}
int main96(void)
{
	//7.定义一个指针类型的字符串常量arr，不能修改arr的值；
	char* arr = "hello world";//常量区，不可修改
	printf("8.输出指针arr地址指向的字符串：%s\n", arr);//hello world
	printf("9.输出指针arr[0]对应的字符：%c\n", arr[0]);//h
	char* p = arr;
	printf("12.输出指针p的地址值：%p\n", p);//00471BE4

	//11.字符串常量arr，是一个常量的数组，可以读取字符或字符串，但不能修改arr；
	//p[0] = 'A'; *p = 'A';
	//printf("10.输出此时指针p地址指向的字符串：%s\n", p);

	//14.程序为了节省内存，字符串常量hello world，是不会改变地址的。
	p = "hello world";
	printf("13.输出指针p重新指向字符串常量后，p的地址值：%p\n", p);//00471BE4

	char arrChar[] = "hello world";//栈区，可以修改
	p = arrChar;
	printf("15.让指针p指向字符数组arrChar,不是字符串常量，就是个字符串时，p的地址值：%p\n", p);//0057F710

	return 0;
}